/**
 * 
 */
package uy.com.pzit.fpmundialmodel.generator;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

import uy.com.pzit.fpmundialmodel.domain.Confederacion;
import uy.com.pzit.fpmundialmodel.domain.Eliminatoria;
import uy.com.pzit.fpmundialmodel.domain.Pais;
import uy.com.pzit.fpmundialmodel.domain.PaisEnCompeticion;
import uy.com.pzit.core.generator.RandomListNumberGenerator;

/**
 * @author pferraz
 * 
 */
public class EliminatoriaGenerator {

	/***
	 * Realiza el random de los equipos europeos
	 * 
	 * @param paisesUEFA
	 * @return Lista de eliminatorias
	 */
	public static List<Eliminatoria> getUEFARandom(Confederacion uefa,Pais locatario) {
		int cantPaises = uefa.getPaises().size();
		RandomListNumberGenerator random = new RandomListNumberGenerator(
				cantPaises);
		List<Eliminatoria> uefaEliminatorias = new ArrayList<Eliminatoria>();
		Eliminatoria uefa1, uefa2, uefa3, uefa4;
		uefa1 = new Eliminatoria(uefa, 1, uefa.getCupos() + 1);
		uefa2 = new Eliminatoria(uefa, 2, uefa.getCupos());
		uefa3 = new Eliminatoria(uefa, 3, uefa.getCupos());
		uefa4 = new Eliminatoria(uefa, 4, uefa.getCupos());

		uefa1.setPaises(new HashSet<PaisEnCompeticion>());
		uefa2.setPaises(new HashSet<PaisEnCompeticion>());
		uefa3.setPaises(new HashSet<PaisEnCompeticion>());
		uefa4.setPaises(new HashSet<PaisEnCompeticion>());

		uefaEliminatorias.add(uefa1);
		uefaEliminatorias.add(uefa2);
		uefaEliminatorias.add(uefa3);
		uefaEliminatorias.add(uefa4);
		List<Pais> listPaises = new ArrayList<Pais>(uefa.getPaises());
		for (int i = 0; i < cantPaises; i++) {
			Pais pais = listPaises.get(random.next());
			if (!pais.getNombre().equalsIgnoreCase(locatario.getNombre())) {
				PaisEnCompeticion paisComp = new PaisEnCompeticion(pais);
				if (uefa1.getPaises().size() < 10) {
					uefa1.getPaises().add(paisComp);
				} else if (uefa2.getPaises().size() < 10) {
					uefa2.getPaises().add(paisComp);
				} else if (uefa3.getPaises().size() < 10) {
					uefa3.getPaises().add(paisComp);
				} else {
					uefa4.getPaises().add(paisComp);
				}
			}
		}

		return uefaEliminatorias;

	}

}
